“h5_crtatt18”

Information

The example shown in this file appears at: http://www.hdfgroup.org/HDF5/Tutor/crtatt.html (accessed 10 July 2011)

The example shown in this file is following the tutorial: http://www.hdfgroup.org/HDF5/Tutor/introductory.html

Good references for the shown HDF5 functions include:
http://www.hdfgroup.org/HDF5/doc/RM/RM_H5Front.html
http://www.hdfgroup.org/HDF5/doc/RM/

Prepared 10 July 2011 by Scot Martin for Windows 7, 64-bit, Mathematica version 8.0.1.

“c” code we seek to replicate in this example

/*
 *   Creating a dataset attribute.
 */

#include "hdf5.h"
#define FILE "dset.h5"

int main() {

   hid_t       file_id, dataset_id, attribute_id, dataspace_id;  /* identifiers */
   hsize_t     dims;
   int         attr_data[2];
   herr_t      status;

   /* Initialize the attribute data. */
   attr_data[0] = 100;
   attr_data[1] = 200;

   /* Open an existing file. */
   file_id = H5Fopen(FILE, H5F_ACC_RDWR, H5P_DEFAULT);

   /* Open an existing dataset. */
   dataset_id = H5Dopen(file_id, "/dset", H5P_DEFAULT);

   /* Create the data space for the attribute. */
   dims = 2;
   dataspace_id = H5Screate_simple(1, &dims, NULL);

   /* Create a dataset attribute. */
   attribute_id = H5Acreate (dataset_id, "Units", H5T_STD_I32BE, dataspace_id, 
                             H5P_DEFAULT, H5P_DEFAULT);

   /* Write the attribute data. */
   status = H5Awrite(attribute_id, H5T_NATIVE_INT, attr_data);

   /* Close the attribute. */
   status = H5Aclose(attribute_id);

   /* Close the dataspace. */
   status = H5Sclose(dataspace_id);

   /* Close to the dataset. */
   status = H5Dclose(dataset_id);

   /* Close the file. */
   status = H5Fclose(file_id);
}

Implementation in Mathematica

SetDirectory[NotebookDirectory[]]

Needs["HDF5`"]

attrData={100,200}

file=FileNameJoin[{Directory[],"dset.h5"}]

fileID=H5Fopen[file,H5FuACCuRDWR,H5PuDEFAULT]

dataSetID=H5Dopen[fileID, "/dset", H5PuDEFAULT]

dataSpaceID=H5ScreateUsimple[1,{2},Null]

attributeID=H5Acreate[dataSetID,"Units",H5T`copy[H5TuSTDuI32BE]@Id[],dataSpaceID,H5PuDEFAULT,H5PuDEFAULT]

H5Awrite[Integer32][attributeID, H5T`copy[H5TuNATIVEuINT]@Id[], attrData]

H5Aclose[attributeID]
H5Sclose[dataSpaceID]
H5Dclose[dataSetID]
H5Fclose[fileID]